﻿using System.Collections.Generic;
using GigaSite.Domain.Entities;

namespace GigaSite.Domain.Interfaces.Repositories
{
    /// <summary>
    /// Абстрактный репозиторий вакансий
    /// </summary>
    public interface IVacanciesRepository: IBaseRepository<Vacancy>
    {
        /// <summary>
        /// Возвращает количество вакансий в категории и во всех ее вложенных подкатегориях
        /// </summary>
        /// <param name="category">Категория вакансий</param>
        /// <returns>Количество вакансий</returns>
        int GetVacanciesCountInCategoryAndChildCategories(Category category);

        /// <summary>
        /// возвращает коллекцию вакансий, находящихся в указанной категории а так же во всех дочерних подкатегориях
        /// </summary>
        /// <param name="category">Категория вакансей</param>
        /// <returns>Коллекция доменных вакансий</returns>
        IEnumerable<Vacancy> GetVacanciesInCategoryAndChildCategories(Category category);
    }
}